use serde::{Deserialize, Serialize};

use crate::{request::ApiRequest, response::ApiResponse};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct ApiOperation {
    // 模块
    pub module: Option<String>,

    // 代码位置
    pub position: String,

    // 标识符
    pub ident: String,

    // 接口名称
    pub name: Option<String>,

    // 接口说明
    pub docs: Option<String>,

    // 标签
    pub tags: Vec<String>,

    // 请求路径
    pub path: String,

    // 请求方式
    pub method: String,

    // http | ws | sse
    pub protocol: String,

    // 请求参数
    pub request: ApiRequest,

    // 响应参数
    pub response: ApiResponse,

    // 中间件
    pub layers: Vec<String>,
}
